// pages/ucenter/addGroundLock/addGroundLock.js
const app = getApp();
const util = require('../../../../utils/util.js');
const FormValidation = require('../../../../utils/formValidation')
Page({

  /**
   * 页面的初始数据
   */
  data: {
    imgList: [], //车位图片
    Address: null, //地址
    CarAddress: null, //车位号
    Code: null, //车锁编码
    longitude: 0, //车位经纬度
    latitude: 0,
    lockId:null,//锁id
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function(options) {
    let self = this;
    if(options.lockid){
      self.setData({
        lockId: options.lockid
      })
      self.getLockInfo();
    }
    //设置验证
    self.initValidate();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady: function() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow: function() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide: function() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload: function() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh: function() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom: function() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage: function() {

  },
  ChooseImage() {
    let self=this;
    wx.chooseImage({
      count: 1, //默认9
      sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图，默认二者都有
      sourceType: ['album'], //从相册选择
      success: (res) => {
        self.upImgFile(res.tempFilePaths);
      }
    });
  },
  ViewImage(e) {
    wx.previewImage({
      urls: this.data.imgList,
      current: e.currentTarget.dataset.url
    });
  },
  DelImg(e) {
    wx.showModal({
      title: '提示',
      content: '确定要删除这张图片吗？',
      cancelText: '再看看',
      confirmText: '确定',
      success: res => {
        if (res.confirm) {
          this.data.imgList.splice(e.currentTarget.dataset.index, 1);
          this.setData({
            imgList: this.data.imgList
          })
        }
      }
    })
  },
  /**
   * 表单提交
   */
  formSubmit(e) {
    let self = this;
    console.log(e);
    const data = e.detail.value;
    // 传入表单数据，调用验证方法
    if (!this.FrmValidate.checkForm(data)) {
      const error = this.FrmValidate.errorList[0];
      wx.showToast({
        title: error.msg,
        icon: 'none'
      })
      return false
    }
    console.log(data);

    if (!self.data.imgList.length) {
      wx.showToast({
        title: '请上传图片',
        icon: 'none'
      })
      return false
    }


    self.setData({
      Address: data.Address, //地址
      CarAddress: data.CarAddress, //车位号
      Code: data.Code //车锁编码
    })

    if(self.data.lockId){ //更新
      self.updateLock();
    }else{//添加
      self.addLock();
    }

  },
  /**
   * 添加锁
   */
  addLock: function() {
    let self = this;
    let url = app.globalData.apiRootUrl + '/CarLock/AddCarLock';
    app.httpRequest({
      url: url,
      data: {
          Address: self.data.Address,
          LockNum: self.data.Code,
          ImageUrl: self.data.imgList[0],
          Parking: self.data.CarAddress,
          UserId: app.globalData.userInfo.UserID,
          Longitude: self.data.longitude,
          Lattitude: self.data.latitude
      },
      method: 'POST',
      success: function(res) {
         let rdata=res.data;
         if(rdata.status==0&&rdata.data){
          //  self.setData({
          //    lockId: rdata.data
          //  })
           wx.showToast({
             title: '保存成功',
             duration:1500
           })
           setTimeout(function(){
             wx.navigateBack({
               delta: 1
             });
           },1500);
         }else{
           wx.showToast({
             title: '保存失败',
             icon:'none'
           })
         }
      },
      fail: function(err) {
        wx.showToast({
          title: '保存失败',
          icon: 'none'
        })
      }
    })
  },
  lockMapTap() {
    let self = this;
    self.checkLocation()
  },
  /**
   * 检测是否获取定位权限
   */
  checkLocation() {
    let self = this;
    util.checkSetting("scope.userLocation").then(function(res) {
      //已经获取授权
      wx.getLocation({
        type: 'gcj02', //返回可以用于wx.openLocation的经纬度
        success(res) {
          const latitude = res.latitude
          const longitude = res.longitude
          self.openLocation(false, latitude, longitude);
        },
      })

    }).catch(function() {
      //未获取授权
      util.openSetting('scope.userLocation', '获取位置需要您授权定位权限，是否前往设置页面开启？').then(function() {
        //已经获取授权
        wx.getLocation({
          type: 'gcj02', //返回可以用于wx.openLocation的经纬度
          success(res) {
            const latitude = res.latitude
            const longitude = res.longitude
            self.openLocation(false, latitude, longitude);
          },
        })
      }).then(function() {
        self.openLocation(false);
      })
    })
  },

  /**
   * openLocation
   */
  openLocation: function (isHasLocation, lattitude, longitude){
     let self=this;
     let data={
       success: function (res) {
         console.log(res);
         self.setData({
           Address: res.address,
           longitude: res.longitude,
           latitude: res.latitude
         })
       },
       fail: function (err) {
        //  wx.showToast({
        //    title: '定位失败，请重新尝试',
        //    icon:'none'
        //  })
       }
     };
    if (isHasLocation){
      Object.assign(data, {
        latitude: latitude,
        longitude: longitude,
      });
    }else{

    }
    wx.chooseLocation(data);
  },
  /**
   * 二维码识别
   */
  ewmTap() {
    let self = this;
    // 只允许从相机扫码
    wx.scanCode({
      onlyFromCamera: true,
      success(res) {
        console.log(res);
        self.setData({
          Code: res.result
        })
      },
      fail(err){
        wx.showToast({
          title: '扫描二维码失败，请重新尝试',
          icon:'none'
        })
      }
    })
  },
  /**
   * 验证初始化
   */
  initValidate() {
    // 验证字段的规则
    const rules = {
      Address: {
        required: true
      },
      CarAddress: {
        required: true
      },
      Code: {
        required: true
      }
    };

    // 验证字段的提示信息，若不传则调用默认的信息
    const messages = {
      Address: {
        required: '请输入车锁地址'
      },
      CarAddress: {
        required: '请输入车位号',
      },
      Code: {
        required: '请输入车锁编码'
      }
    };
    // 创建实例对象
    this.FrmValidate = new FormValidation(rules, messages)
  },
  //图片上传
  upImgFile: function (imgUrl) {
    let self = this;
    console.log(imgUrl);
    wx.uploadFile({
      url: app.globalData.apiRootUrl + '/Common/FileUpload',
      filePath: imgUrl[0],
      name: 'file',
      formData: {},
      success: function (res) {
        let rdata = JSON.parse(res.data);
        console.log(rdata);
        if (rdata.status == 0) {
          self.setData({
            imgList: [rdata.data]
          })
        } else {
          wx.showToast({
            title: rdata.message,
            icon: 'none'
          })
        }
      },
      fail: function (e) {
        wx.showToast({
          title: '上传图片失败',
          icon: 'none'
        })
      }
    })
  },
  //获取锁信息
  /**
 * 获取地锁
 */
  getLockInfo: function () {
    let self = this;
    let url = app.globalData.apiRootUrl + '/CarLock/GetLock';
    app.httpRequest({
      url: url,
      data: {
        id:self.data.lockId
      },
      success: function (res) {
        let rdata = res.data;
        if (rdata.status == 0 && rdata.data) {
          self.setData({
            imgList: [rdata.data.ImageUrl], //车位图片
            Address: rdata.data.Address, //地址
            CarAddress: rdata.data.Parking, //车位号
            Code: rdata.data.LockNum, //车锁编码
            longitude: rdata.data.Longitude, //车位经纬度
            latitude: rdata.data.Lattitude,
          })
        }
      },
      fail: function (err) {
        
      }
    })
  },
  /**
   * 更新锁信息
   */
  updateLock:function(){
    let self=this;
    let url = app.globalData.apiRootUrl + '/CarLock/UpdateLock';
    app.httpRequest({
      url:url,
      data:{
        ID:self.data.lockId,
        Address: self.data.Address,
        LockNum: self.data.Code,
        ImageUrl: self.data.imgList[0],
        Parking: self.data.CarAddress,
        UserId: app.globalData.userInfo.UserID,
        Longitude: self.data.longitude,
        Lattitude: self.data.latitude
      },
      method:'POST',
      success:function(res){
        let rdata=res.data;
        if(rdata.status==0){
          wx.showToast({
            title: '更新成功',
            duration:1500
          })
          setTimeout(function(){
            wx.navigateTo({
              url: '/pages/utilPage/pages/groundLock/groundLock',
            })
          },1500)
        }
      },
      fail:function(err){
        wx.showToast({
          title: '更新失败',
          icon:'none'
        })
      }
    })
  }
})